home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 331 / gemfsc14 / aessrc14 / aesutrs2.s < prev    next >
Text File  |  1990-05-26  |  3KB  |  81 lines

  1.  
  2. ;*========================================================================
  3. ;*
  4. ;* AESFAST Public Domain GEM bindings.
  5. ;*
  6. ;*  05/26/90  v1.4
  7. ;*            Added handling of ICON objects.
  8. ;*  09/18/89  v1.3
  9. ;*            Added code to handle INDIRECT objects.
  10. ;*========================================================================
  11.  
  12. ;*************************************************************************
  13. ;*
  14. ;* AESUTRS2.S - Resource-related Utilities 2 of n.
  15. ;*  Non-standard utility functions.
  16. ;*
  17. ;*************************************************************************
  18.  
  19.           .include  "gemfast.sh"
  20.  
  21. ;-------------------------------------------------------------------------
  22. ; rsc_gstrings - Get pointers to strings within a tree.
  23. ;
  24. ;               This function gets one or more string pointers from within
  25. ;               a resource tree.  It knows the difference between strings
  26. ;               and buttons and text objects, and gets the ob_spec or
  27. ;               te_ptext pointer as appropriate. It accepts a variable
  28. ;               number of object/pointer pairs, with a negative object
  29. ;               index indicating the end of the list.
  30. ;
  31. ;               In this function, ptr1, ptr2, etc are the addresses of
  32. ;               the pointers you want to initialize...
  33. ;  void rsc_sstrings(tree, obj1,ptr1 [,obj2,ptr2,...,objn,ptrn], -1);
  34. ;-------------------------------------------------------------------------
  35.  
  36. _rsc_gstrings::
  37.  
  38.           .cargs    #12,.ptree.l,.parms
  39.  
  40.           movem.l    a2-a3,-(sp)            ; Save Laser C register.
  41.           move.l    .ptree(sp),a3
  42.           lea       .parms(sp),a2
  43. .loop:
  44.           move.w    (a2)+,d2
  45.           bmi.s     .done
  46.           move.l    (a2)+,a0
  47.           muls      #OBJ_SIZ,d2
  48.  
  49.           lea       ob_spec(a3,d2.l),a1 ; Get ob_spec.
  50.           btst.b    #0,ob_flags(a3,d2.l); Is INDIRECT flag set?
  51.           beq.s     .notind             ; Nope, ob_spec is all set.
  52.           move.l    (a1),a1             ; Yep, get real ob_spec.
  53. .notind:
  54.           move.w    ob_type(a3,d2.l),d1 ; Get ob_type.
  55.           cmp.b     #G_ICON,d1
  56.           beq.s     .icon
  57.           cmp.b     #G_TEXT,d1
  58.           beq.s     .text
  59.           cmp.b     #G_BOXTEXT,d1
  60.           beq.s     .text
  61.           cmp.b     #G_FTEXT,d1
  62.           beq.s     .text
  63.           cmp.b     #G_FBOXTEXT,d1
  64.           bne.s     .string
  65. .icon:
  66.           move.l    (a1),a1             ; For ICON, ob_spec points to 
  67.           lea       12(a1),a1           ; iconblk, text ptr is iconblk+12.
  68.           bra.s     .string
  69. .text:  
  70.           move.l    (a1),a1             ; Get te_ptext
  71. .string:
  72.           move.l    (a1),(a0)
  73.           bra.s     .loop
  74. .done:
  75.           movem.l    (sp)+,a2-a3        ; Restore Laser C register.
  76.           rts
  77.  
  78.           
  79. ;         end of code
  80.  
  81.